const express = require("express");

const app = express();

const heroRouter = require("./route/hero");
const userRouter = require("./route/user");

const jwt = require('express-jwt');
app.use(jwt({
  secret: 'itcast66', // 生成token时的 钥匙，必须统一
  algorithms: ['HS256'] // 必填，加密算法，无需了解
}).unless({
  path: ['/user/login', '/user/register'] // 除了这两个接口，其他都需要认证
}));

// 如果 验证失败了  自动跳转到 错误处理中间件中！！！ 

// 统一处理post请求的参数
app.use(express.urlencoded());

// 静态托管 uploads 文件夹即可 - 前端可以访问到
app.use(express.static("uploads"));


// 引入 英雄路由
app.use("/hero", heroRouter);
// 引入 用户路由
app.use("/user", userRouter);

// 错误处理中间件 
app.use((err, req, res, next) => {
  // 当我们 token验证失败的时候 express-jwt 自动帮我们封装一个error 对象 传递到 错误处理中间件中
  // name =  "UnauthorizedError " express-jwt 
  if (err.name === 'UnauthorizedError') {
    res.status(401);
    res.send({ msg: 'token 不合法' });
  }
});


app.listen(3005, () => console.log("3005 开启成功"));